#!/usr/bin/env python3
"""
数据格式转换智能体集成示例
展示如何将新智能体与现有系统集成
"""

import json
from agent_data_formatter import format_data_to_standard
from config import DS_CONFIG

def simulate_existing_agent(user_request: str):
    """
    模拟现有智能体的工作流程
    1. 分析用户请求
    2. 生成SQL查询
    3. 执行数据库查询
    4. 生成分析总结
    """
    print(f"🔍 现有智能体处理用户请求: {user_request}")
    
    # 模拟数据库查询结果
    if "中高端用户" in user_request:
        query_results = [
            {"ATTR_CITY": "朝阳区", "count": 185},
            {"ATTR_CITY": "丰台区", "count": 103},
            {"ATTR_CITY": "东城区", "count": 97},
            {"ATTR_CITY": "西城区", "count": 90},
            {"ATTR_CITY": "昌平区", "count": 74}
        ]
        summary = "北京市各区中高端用户数量统计完成，朝阳区用户最多（185人），其次是丰台区（103人）和东城区（97人）。"
    
    elif "用户类型占比" in user_request:
        query_results = [
            {"user_type": "中高端用户", "percentage": 60},
            {"user_type": "腰部用户", "percentage": 30},
            {"user_type": "其他用户", "percentage": 10}
        ]
        summary = "用户类型分布统计完成，中高端用户占比最高（60%），腰部用户占30%，其他用户占10%。"
    
    elif "ARPU变化趋势" in user_request:
        query_results = [
            {"month": "1月", "arpu": 120},
            {"month": "2月", "arpu": 132},
            {"month": "3月", "arpu": 101},
            {"month": "4月", "arpu": 134}
        ]
        summary = "ARPU变化趋势分析完成，整体呈波动上升趋势，2月份达到峰值132元。"
    
    elif "年龄与ARPU" in user_request:
        query_results = [
            {"age": 25, "arpu": 120},
            {"age": 30, "arpu": 150},
            {"age": 35, "arpu": 180},
            {"age": 40, "arpu": 200},
            {"age": 45, "arpu": 220}
        ]
        summary = "年龄与ARPU关系分析完成，年龄越大ARPU越高，呈现明显的正相关关系。"
    
    else:
        query_results = []
        summary = "未找到相关数据"
    
    print(f"📊 查询结果: {len(query_results)} 条记录")
    print(f"📝 分析总结: {summary}")
    
    return {
        "query_results": query_results,
        "summary": summary
    }

def integrate_with_formatter_agent(user_request: str):
    """
    集成新智能体的完整流程
    1. 现有智能体处理用户请求
    2. 新智能体进行格式转换
    3. 输出标准格式结果
    """
    print("🚀 开始集成流程")
    print("=" * 60)
    
    # 步骤1: 现有智能体处理
    print("📋 步骤1: 现有智能体处理用户请求")
    existing_result = simulate_existing_agent(user_request)
    
    # 步骤2: 新智能体格式转换
    print("\n🔄 步骤2: 新智能体进行格式转换")
    final_result = format_data_to_standard(
        user_request=user_request,
        query_results=existing_result["query_results"],
        summary=existing_result["summary"],
        config=DS_CONFIG
    )
    
    # 步骤3: 输出结果
    print("\n📤 步骤3: 输出标准格式结果")
    print(f"图表类型: {final_result['chart_type']}")
    print(f"总结: {final_result['summary']}")
    print(f"数据格式: {'✅ 正确' if final_result['data'] else '❌ 错误'}")
    
    if final_result['data']:
        print("ECharts配置预览:")
        print(json.dumps(final_result['data'], ensure_ascii=False, indent=2))
    
    return final_result

def demonstrate_workflow():
    """演示完整的工作流程"""
    print("🎯 数据格式转换智能体集成演示")
    print("=" * 80)
    
    # 测试用例
    test_cases = [
        "请统计北京不同区中高端用户数",
        "请统计用户类型占比",
        "请统计最近几个月的ARPU变化趋势",
        "请分析用户年龄与ARPU值的关系"
    ]
    
    results = []
    
    for i, test_case in enumerate(test_cases, 1):
        print(f"\n📊 测试用例 {i}: {test_case}")
        print("-" * 60)
        
        result = integrate_with_formatter_agent(test_case)
        results.append({
            "case": test_case,
            "result": result
        })
        
        print("-" * 60)
    
    # 总结
    print("\n📋 集成演示总结")
    print("=" * 60)
    print(f"测试用例数: {len(test_cases)}")
    
    success_count = sum(1 for r in results if r['result']['data'] is not None)
    print(f"成功转换: {success_count}/{len(test_cases)}")
    
    chart_types = [r['result']['chart_type'] for r in results]
    print(f"图表类型分布: {chart_types}")
    
    return results

def show_integration_benefits():
    """展示集成的好处"""
    print("\n🎉 集成优势分析")
    print("=" * 60)
    
    benefits = [
        "✅ 职责分离：现有智能体专注数据分析，新智能体专注格式转换",
        "✅ 可维护性：两个智能体独立开发和维护",
        "✅ 可扩展性：可以轻松添加新的图表类型和格式",
        "✅ 错误隔离：一个智能体出错不影响另一个",
        "✅ 测试友好：可以独立测试每个智能体",
        "✅ 性能优化：可以根据需要优化每个智能体"
    ]
    
    for benefit in benefits:
        print(benefit)
    
    print("\n🔄 数据流转图:")
    print("用户请求 → 现有智能体 → 数据库查询 → 分析结果 → 新智能体 → 格式转换 → 最终输出")

def main():
    """主函数"""
    print("🚀 数据格式转换智能体集成示例")
    print("=" * 80)
    
    # 演示工作流程
    results = demonstrate_workflow()
    
    # 展示集成优势
    show_integration_benefits()
    
    print("\n🎯 集成示例完成!")
    print("=" * 80)
    print("📋 下一步:")
    print("1. 将新智能体集成到现有的LangGraph流程中")
    print("2. 配置LLM依赖以启用智能图表选择")
    print("3. 添加更多图表类型支持")
    print("4. 优化性能和错误处理")

if __name__ == "__main__":
    main()
